package com.wengzw.gateway.config;


import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.time.Duration;

@Component
@RequiredArgsConstructor
public class TokenDao {
    private final RedisTemplate<String, String> redisTemplate;

    /**
     * 获取用户鉴权token在redis中的key
     * @param username token对应的用户名
     * @param token token
     * @return key
     */
    public static String getTokenKey(String username, String token) {
        return "ixx::token::" + username + "::" + token;
    }

    /**
     * 添加用户鉴权token到Redis缓存
     * @param username token对应的用户名
     * @param token token
     */
    public void setToken(String username, String token) {
        redisTemplate.opsForValue().set(getTokenKey(username, token), "1", Duration.ofDays(2));
    }

    /**
     * 判断用户鉴权token是否有效
     * @param username token对应的用户名
     * @param token token
     * @return  token有效返回true，否则返回false
     */
    public boolean isTokenValid(String username, String token) {
        String key = getTokenKey(username,token);
        String value = redisTemplate.opsForValue().get(key);
        return value != null;
    }

}

